1
자연스러운 문법: 연산자 오버로딩의 철학
AI037Lesson 17
00:00

철학은 자연스러운 문법 사용자 정의 타입이 1등 시민처럼 행동해야 한다고 주장한다입니다. 연산자 오버로딩을 구현함으로써 연산자 오버로딩클래스가 표준 표기법(예: + 또는 ==)를 사용할 수 있게 해주며, 인지 부담을 줄이고 최소 놀라움 원칙을 충족시킵니다.

1. 구조 및 전달 방식

연산자는 특수한 이름을 가진 함수입니다: 키워드 operator 다음에 기호가 오는 것입니다. 단항 연산자는 단항 연산자 하나의 피연산자를 가지며, 이에 비해 이항 연산자는 이항 연산자 두 개의 피연산자를 가집니다. 멤버 함수로 정의된 경우, 멤버 함수왼쪽 피연산자는 암시적 this 포인터 (a.operator+(b))에 바인딩됩니다. 비멤버 함수인 경우, 비멤버양쪽 모두 명시적으로 제공됩니다(operator+(a, b))

오버로딩 가능한+ - * / % ^& | ~ ! = < >+= -= *= /= << >>== != <= >= && ||++ -- , ->* -> () []오버로딩 불가능:: (범위).* (멤버 참조 해제)을 충족시킵니다. (점)?: (조건부)표 14.1. 연산자 권한 (참고: 684페이지)

2. 제약 조건 및 윤리

C++는 "언어 훼손"을 방지합니다: 새로운 기호를 만들 수 없습니다(예: **) 또는 기본 타입(예: int + int)에 대한 연산을 재정의할 수 없습니다. 우선순위와 결합 순서는 변경 불가능합니다. 아키텍처 원칙: == 을 정의하는 클래스는 std::find을 충족시킵니다.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>